// pages/login/index.js
import { request } from '../../utils/request';
import WxValidate from '../../common/WxValidate';
Page({

    /**
     * 页面的初始数据
     */
    data: {
        form: {
            wechatName: "",
            userCode: "",
            phoneno: "",
        },
        checked: false,
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        this.initValidate();
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        
    },

    /** 输入框输入时 */
    input(e){
        let key = e.target.dataset.key;
        this.setData({
            ['form.'+key]: e.detail.value
        })
    },

    /** 点击复选框操作 */
    checkboxTap(e){
        this.setData({
            checked: !this.data.checked
        })
    },

    /** 跳转用户服务协议 */
    toAgreement() {
        wx.navigateTo({
            url: `/pages/agreement/index`, 
        })
    },
    
    /** 跳转隐私政策 */
    toPrivacy() {
        wx.navigateTo({
            url: `/pages/privacy/index`, 
        })
    },

    /** 跳转申请体验账号 */
    toExperience() {
        wx.navigateTo({
            url: `/pages/experience/index`, 
        })
    },

    /** 登录 */
    login() {
        let { form } = this.data;
        // 传入表单数据，调用验证方法
        if (!this.WxValidate.checkForm(this.data.form)) {
            const error = this.WxValidate.errorList[0]
            this.showModal(error)
            return false
        }
        if(!this.data.checked){
            this.showModal({msg: "请勾选协议"})
            return
        }
        wx.login({
            success: (res) => {
                if (res.code) {
                    console.log("Code is:" + res.code)
                    form.code = res.code;
                    request({
                        url: "/login",
                        reqRSAENCRY: true, // 参数是否加密
                        resRSADECRY: true, // 返回值是否解密
                        isParse: false,
                        data: form,
                    }).then(res => {
                        console.log(res)
                        if(res.code == 45024){
                            wx.navigateTo({
                                url: `/pages/skip/index`,
                            })
                        }
                        if(res.code == 0){
                            wx.setStorageSync('authorization', res.data); 
                            wx.navigateBack()
                        }
                    }).catch(error => {
                        // console.log(error)
                    })   
                } else {
                    // console.log('登录失败！' + res.errMsg);
                }
            }
        })
          
    },
    // 表单验证
    initValidate() {
        // 验证字段的规则
        const rules = {
            wechatName: {
                required: true,
                name: true
            },
            phoneno: {
                required: true,
                minlength: 11
                // tel: true
            },
            userCode: {
                required: true,
                digits: true
            },
        }
        // 验证字段的提示信息，若不传则调用默认的信息
        const messages = {
            wechatName: {
                required: '请输入姓名',
            },
            phoneno: {
                required: '请输入工作电话',
                minlength: '请输入11位工作电话'
                // tel: '请输入正确的工作电话'
            },
            userCode: {
                required: '请输入用户编号',
                digits: '用户编号为数字'
            },
        }

        // 创建实例对象
        this.WxValidate = new WxValidate(rules, messages)

        // 自定义验证规则
        this.WxValidate.addMethod('name', (value, param) => {
            var returnVal = true;
            if(/^[\u4e00-\u9fa5]{2,6}$/.test(value)){
                returnVal = true;
            }else{
                returnVal = false;
                return false
            }
            return this.WxValidate.optional(value) || returnVal
        }, '姓名为中文')
    },
    showModal(error) {
        wx.showToast({
            title: error.msg,
            icon: 'none',
            duration: 2000
        })
    },
})